最详细Python批量字典暴力破解zip密码 |
您所在的位置:网站首页 › python 文件复制粘贴到另一个目录 › 最详细Python批量字典暴力破解zip密码 |
工具破解 前两天在网上下来了一波项目案例,结果全是加密的压缩包,于是去网上找了一个压缩包破解的工具 苦于工具破解太慢,一个压缩包要好久,解压了三个之后就放弃了,准备另寻他法 密码字典巧的是破解的三个都是4位数字密码,这让我想到了依靠字典破解 说干就干,伸手就来 #生成从0000到9999的密码表 f = open('passdict4.txt','w') for id in range(10000): password = str(id).zfill(4)+'\n' f.write(password) f.close()果然猜想没错,破解速度的确快了 既然有更快速的方法,那为什么不研究个自动的方法出来呢 ZipFile库Python有个叫ZipFile的库可以解压zip文件,从其相关文档中 ZipFile.extractall(path=None, members=None, pwd=None)将zip文档内的指定文件解压到当前目录。参数path指定了解析文件保存的文件夹参数members指定要解压的文件名称或对应的ZipInfo对象参数pwd为解压密码。只需循环读取文件夹下的zip文件然后逐个解压即可 注意:python3有一个中文文件名乱码的,将ZipFile.py中的“cp437”改成“gbk”(两个地方需更改)即可永久解决 # zipfile打开zip文件 z = zipfile.ZipFile(f'{file_path}', 'r' # path为解压路径,解包后位于该路径下 z.extractall(path=f"{root}) z.close()在这个基础上再加上循环密码字典 注意:由于解压是密码错误会产生异常,这里可以利用try except进行处理 # 获取字典中的内容 passFile = open(r"D:\python\passdict4.txt") # 循环获得单个密码 for line in passFile.readlines(): # 去换行 password = line.strip('\n') try: zip_file.extractall(path=f"{root}", pwd=password.encode("utf-8")) print(password) # 密码对了就不继续下去了 break except: # 什么都不做 pass zip_file.close() # 关闭文件,必须有,释放内存这么一通操作下来本以为大功告成,没想到事情没那么简单 大多是时候是可以破解的,但是总有些就破解失败了,束手无策的各个网站找方法 刚开始以为是extractall方法调用错了,但是报的错是密码错误,这就让我很迷 偶然见在一个看到一篇文章才得知 已经花了这么多心思,要是到这里就放弃,那真的是太淦了 既然加密方式不一样,那么解压软件是怎么做到直接解压的呢 这里产生了一个构想,要是能从代码里调用解压软件,那不就好办了吗 于是我赶紧使用绝技 成功搜索到,7z等多款解压软件有相关功能 调用第三方软件命令行配置环境变量 命令行验证一下 奈斯,配置成功 passFile = open(r"D:\python\passdict4.txt") for line in passFile.readlines(): password = line.strip('\n') # t 测试 command='7z -p'+password+' t '+file_path child=subprocess.call(command) if(child==0): print(password) break加密方式不一样的事情是解决了,不过人的贪欲真的是可怕 重复调用命令行这一闪一闪的又让我不爽了 pyzipper库(终极)恰巧在查加密方式的时候看到有人提出 Python有个pyzipper库可以很好的兼容代替zipfile,可以读写AES加密的zip文件 都走到这了,没有撤退可言 #安装pyzipper pip install pyzipper会出现中文名乱码情况,记得改下 f1 = open('D:\python\passdict4.txt','r') with pyzipper.AESZipFile(file_path,'r') as f: for i in f1: i = i.rstrip('\n') f.pwd = str.encode(i) try: f.extractall(path=f"{root}") print(file_path+"\t密码是:"+i) break except Exception: pass f.close() f1.close()这个方法,堪称完美 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |